热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

零时科技|FeministMetaverse遭受攻击,损失11亿枚FM。

0x1 事件背景零时科技区块链安全情报平台监控到消息,北京时间 2022年5月18日 Binance 链上 Feminist Metaverse 智能合约遭到智能合约攻击。损失资金价值超过55万美元,


0x1 事件背景

零时科技区块链安全情报平台监控到消息,北京时间 2022年5月18日 Binance 链上 Feminist Metaverse 智能合约遭到智能合约攻击。损失资金价值超过55万美元,零时科技安全团队及时对此安全事件进行分析。



0x2 攻击者信息

  • 攻击者钱包:

0xaaA1634D669dd8aa275BAD6FdF19c7E3B2f1eF50


  • 攻击者合约:

0x0b8d752252694623766dfb161e1944f233bca10f


  • 攻击交易:

0xecde3c3742615852abdbd6ec5d75ae982b5c29f810e140e5cd822667d6f7b848


  • FmToken合约:

0x843528746F073638C9e18253ee6078613C0df0f1


0x3 攻击分析

通过分析攻击者在BNB Chain链上攻击交易,攻击者主要的交易流程如下:

  1. 攻击者部署攻击合约;

  2. 攻击钱包发送10 枚 FM 至 攻击合约,为后续调用做准备;

  3. 攻击者将自己钱包中的FM资金最大值授权给PancakeSwap.Router v2合约,方便后续代币兑换;

  4. 攻击者正式开始调用攻击合约进行攻击,通过攻击合约调用 Fmtoken.transfer 将资金转移至攻击者钱包,随后从 SakeSwapPair.skim 中取出大量FM代币;

  5. 将获取的 FM 代币兑换为 USD ,最终兑换为 BNB。

跟进主要攻击交易第四步:

交易流程

交易详情

以上交易细节中只存在两种操作:第一种是攻击者合约调用 Fmtoken 合约中 transfer 方法给攻击者钱包转移FM代币,每次转移 0.0000000000001 枚 FM,一共转移500次;第二种是攻击者钱包地址调用 SakeSwapPair 合约中 skim 方法给自己转移 7593 万枚 FM。

通过对所有交易进行分析,攻击者共进行了16笔成功的攻击交易,8000 次调用 Fmtoken 合约中 transfer 方法转移资金,从 skim 方法转移超过 11 亿枚 FM。


0x4 漏洞细节

通过上述流程分析可以发现,攻击者成功获利的主要操作是攻击者合约调用 Fmtoken 合约中 transfer 方法给攻击者钱包转移FM代币,随后获取了大量资金,这里跟进 Fmtoken.transfer 方法:

关键代码展示

通过该图可以明确,攻击者最终通过transfer方法转移资金。由于numTokensSellToAddToLiquidity和swapAndLiquifyEnabled变量已确定,所以在transfer方法的if判断的三个条件中,swapAndLiquifyEnabled已满足,由于攻击者调用所以from != uniswapV2Pair条件也满足,当该合约地址资金不小于numTokensSellToAddToLiquidity变量值时,可满足判断条件,所以攻击者可以执行更新uniswapV2Pair地址余额和address(this)的操作。

由于这里的资金添加给uniswapV2Pair时,并不是通过添加流动性的方式转移资金,而是直接将资金添加给uniswapV2Pair。当攻击者执行多次转账后,也就是攻击者将合约的资金多次转移给了uniswapV2Pair。

之后

skim方法,任何人都可以调用该方法转移合约中额外的资产

攻击者调用 SakeSwapPair 合约中 skim 方法将资金转移,成功获利。


0x5 资金来源及去向

攻击者资金来源均来自 Tornado.Cash 混币平台,数量为1 枚 BNB。目前攻击者获利资金已全部兑换为 1838.3 枚BNB转移至 Tornado.Cash 混币平台。


0x6 总结

通过此次攻击事件来看,Fmtoken._transfer方法中未对添加给 SakeSwapPair合约的资金进行正确操作,导致攻击者在一笔交易中可以通过多次循环转账,转移合约中原有的资金至 SakeSwapPair合约,从而通过 skim方法取走资金。对于 Fmtoken 合约资金转移的正确性校验,在合约代码开发完成后,完全可以通过代码安全审计避免。


0x7 安全建议

  • 对于合约资金转移逻辑应进行严格检查;

  • 智能合约上线前应进行完整细致的测试,保证合约逻辑正常;

  • 智能合约上线前应进行全面安全审计,对智能合约风险进行全面排查。


出品 零时科技安全团队

·END·

关注

往期内容回顾

区块链安全100问 | 第一篇:区块链安全是什么

【喜报】零时科技参与编制的《区块链关键服务安全技术要求》标准成功发布

零时科技 | Fortress攻击事件分析

Beanstalk Farms攻击事件分析 | 零时科技

为什么黑客如此“钟爱”跨链桥

零时科技 | Agave Finance攻击事件分析

Hundred Finance攻击事件分析 | 零时科技

零时科技 | 被盗6.1亿美金,Poly Network 被攻击复盘分析

喜讯|零时科技完成天使轮800万元融资,持续深化区块链生态安全布局

Popsicle攻击事件复盘分析 | 零时科技

黑客大揭秘!扫码转账即可控制你的数字钱包


推荐阅读
author-avatar
林志岳小行克元
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有